/// O(n), 0base
int Josephus(int n, int k){
    int ans = 0;
    for(int i=1;i<=n;++i) ans = (ans + k) % i;
    return ans;
}

/// O(klogn),0base
int Josephus(int n, int k){
    if(1 == n) return 0;
    if(1 == k) return n - 1;
    if(k > n) return (Josephus(n - 1, k) + k) % n;

    int ans = Josephus(n - n / k, k);
    ans -= n % k;
    if(ans < 0) ans += n;
    else ans += ans / (k - 1);
    return ans;
}